异常处理机制
简介
这一章我们来介绍一下 异常处理的引导类 Illuminate\Foundation\Bootstrap\HandleExceptions
如图:
这个类的功能:是替换 PHP 系统默认报错信息提示的处理函数,我们在 Laravel 出现报错时,看到的界面就是通过这里进行更换的。
正文
先贴代码 Illuminate\Foundation\Bootstrap\HandleExceptions
类的 bootstrap
方法
public function bootstrap(Application $app)
{
$this->app = $app;
error_reporting(-1);
set_error_handler([$this, 'handleError']);
set_exception_handler([$this, 'handleException']);
register_shutdown_function([$this, 'handleShutdown']);
if (! $app->environment('testing')) {
ini_set('display_errors', 'Off');
}
}
- 第一个
$this->app = $app;
给当前对象的app
属性赋值,记录容器对象 - 第二个
error_reporting(-1);
:设置报告所有 PHP 错误 ;具体error_reporting
方法。。。看这里 - 第三个
set_error_handler([$this, 'handleError']);
:将当前对象的handleError
方法设置为错误处理函数,替换掉系统默认的处理函数;具体set_error_handler
方法。。。看这里 - 第四个
set_exception_handler([$this, 'handleException']);
:将当前对象的handleException
方法设置为异常处理函数,替换掉系统默认的处理函数;具体set_exception_handler
方法。。。看这里 - 第五个
register_shutdown_function([$this, 'handleShutdown']);
:将当前对象的handleShutdown
方法设置为 PHP 中止时执行的函数;具体register_shutdown_function
方法。。。看这里 - 第六个
if (! $app->environment('testing')) {
ini_set('display_errors', 'Off');
}
检测当前是否是 testing
运行环境,是则默认为 PHP 的错误显示。如果不是 testing
环境则关闭错误显示。